import type { Metadata } from 'next'; import Link from 'next/link'; import { ComponentGrid } from '@/components/detail/ComponentGrid'; import { ScopeHeader } from '@/components/detail/ScopeHeader'; import { ScopePressureChart } from '@/components/detail/ScopeCharts'; import { LatencyMatrixTable, LinkList, ProbesTable, TargetsTable } from '@/components/detail/Tables'; import { IncidentsSection } from '@/components/incidents/IncidentsSection'; import { Section, Stat } from '@/components/ui/primitives'; import { apiGet, apiTry } from '@/lib/api'; import { fmt, fmtDelta, fmtInt, fmtPct } from '@/lib/format'; import type { CountryDetailResponse, Latency } from '@/lib/types'; export const dynamic = 'force-dynamic'; type Params = Promise<{ cc: string }>; export async function generateMetadata({ params }: { params: Params }): Promise { const { cc } = await params; const c = await apiTry(`/api/v1/pressure/country/${encodeURIComponent(cc.toUpperCase())}`); if (!c) return { title: 'Country' }; return { title: `${c.name} — Internet pressure ${fmt(c.pressure)} (${c.level_label})`, description: `Live Internet pressure observed for ${c.name}: ${fmt(c.pressure)} ${c.level_label}, ${fmtDelta(c.delta_1h)} over 1 h, from ${c.probes.length} probes and ${c.targets.length} anchored targets.`, alternates: { canonical: `/country/${cc.toLowerCase()}` } }; } export default async function CountryPage({ params }: { params: Params }) { const { cc } = await params; const [c, latency] = await Promise.all([apiGet(`/api/v1/pressure/country/${encodeURIComponent(cc.toUpperCase())}`), apiTry('/api/v1/latency')]); const first = c.history_24h.points[0]?.pressure; const change24 = first != null ? c.pressure - first : null; const matrix = (latency?.matrix ?? []).filter((m) => m.from === c.region || m.to === c.region); return (
Country · region{' '} {c.region} } title={c.name} subtitle={ <> {c.probes.length} probe{c.probes.length === 1 ? '' : 's'} · {fmtInt(c.targets.length)} anchored targets · role {c.role} {!c.coverage_ok && · weak coverage} } pressure={c.pressure} level={c.level} delta1h={c.delta_1h} trend={c.trend} meta={ <> Δ24h {fmtDelta(change24)} 7d median {fmt(c.baseline_7d.median)} · p90 {fmt(c.baseline_7d.p90)} ISO {c.cc} } />
vs 7-day baseline}>
region {c.region} pairs}>
({ key: String(a.asn), name: a.name, pressure: a.pressure, sub: `AS${a.asn}` }))} hrefFor={(k) => `/asn/${k}`} label="ASNs" />
({ key: s.slug, name: s.name, pressure: s.pressure, sub: `avail ${fmtPct(s.observed_availability_24h, 2)}` }))} hrefFor={(k) => `/service/${k}`} label="services" />
target registry →}>
); }